39#ifdef PREINIT_SUPPORTED
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_spi_master.h"
74#define POWERSTEP2_CMD_NOP 0x00
75#define POWERSTEP2_CMD_SET_PARAM 0x00
76#define POWERSTEP2_CMD_GET_PARAM 0x20
77#define POWERSTEP2_CMD_RUN 0x50
78#define POWERSTEP2_CMD_STEP_CLOCK 0x58
79#define POWERSTEP2_CMD_MOVE 0x40
80#define POWERSTEP2_CMD_GO_TO 0x60
81#define POWERSTEP2_CMD_GO_TO_DIR 0x68
82#define POWERSTEP2_CMD_GO_UNTIL 0x82
83#define POWERSTEP2_CMD_RELEASE_SW 0x92
84#define POWERSTEP2_CMD_GO_HOME 0x70
85#define POWERSTEP2_CMD_GO_MARK 0x78
86#define POWERSTEP2_CMD_RESET_POS 0xD8
87#define POWERSTEP2_CMD_RESET_DEVICE 0xC0
88#define POWERSTEP2_CMD_SOFT_STOP 0xB0
89#define POWERSTEP2_CMD_HARD_STOP 0xB8
90#define POWERSTEP2_CMD_SOFT_HIZ 0xA0
91#define POWERSTEP2_CMD_HARD_HIZ 0xA8
92#define POWERSTEP2_CMD_GET_STATUS 0xD0
98#define POWERSTEP2_PARAM_GEN_ABS_POS 0x01
99#define POWERSTEP2_PARAM_GEN_EL_POS 0x02
100#define POWERSTEP2_PARAM_GEN_MARK 0x03
101#define POWERSTEP2_PARAM_GEN_SPEED 0x04
102#define POWERSTEP2_PARAM_GEN_ACC 0x05
103#define POWERSTEP2_PARAM_GEN_DEC 0x06
104#define POWERSTEP2_PARAM_GEN_MAX_SPEED 0x07
105#define POWERSTEP2_PARAM_GEN_MIN_SPEED 0x08
106#define POWERSTEP2_PARAM_V_KVAL_HOLD 0x09
107#define POWERSTEP2_PARAM_C_TVAL_HOLD 0x09
108#define POWERSTEP2_PARAM_V_KVAL_RUN 0x0A
109#define POWERSTEP2_PARAM_C_TVAL_RUN 0x0A
110#define POWERSTEP2_PARAM_V_KVAL_ACC 0x0B
111#define POWERSTEP2_PARAM_C_TVAL_ACC 0x0B
112#define POWERSTEP2_PARAM_V_KVAL_DEC 0x0C
113#define POWERSTEP2_PARAM_C_TVAL_DEC 0x0C
114#define POWERSTEP2_PARAM_V_INT_SPEED 0x0D
115#define POWERSTEP2_PARAM_V_ST_SLP 0x0E
116#define POWERSTEP2_PARAM_C_T_FAST 0x0E
117#define POWERSTEP2_PARAM_V_FN_SLP_ACC 0x0F
118#define POWERSTEP2_PARAM_C_TON_MIN 0x0F
119#define POWERSTEP2_PARAM_V_FN_SLP_DEC 0x10
120#define POWERSTEP2_PARAM_C_TOFF_MIN 0x10
121#define POWERSTEP2_PARAM_V_K_THERM 0x11
122#define POWERSTEP2_PARAM_GEN_ADC_OUT 0x12
123#define POWERSTEP2_PARAM_GEN_OCD_TH 0x13
124#define POWERSTEP2_PARAM_V_STALL_TH 0x14
125#define POWERSTEP2_PARAM_GEN_FS_SPD 0x15
126#define POWERSTEP2_PARAM_GEN_STEP_MODE 0x16
127#define POWERSTEP2_PARAM_GEN_ALARM_EN 0x17
128#define POWERSTEP2_PARAM_GEN_GATECFG1 0x18
129#define POWERSTEP2_PARAM_GEN_GATECFG2 0x19
130#define POWERSTEP2_PARAM_V_CONFIG 0x1A
131#define POWERSTEP2_PARAM_C_CONFIG 0x1A
132#define POWERSTEP2_PARAM_GEN_STATUS 0x1B
150#define POWERSTEP2_GEN_ABS_POS_HOME 0x000000ul
151#define POWERSTEP2_GEN_ABS_POS_MASK 0x3FFFFFul
152#define POWERSTEP2_GEN_EL_POS_STEP_ZERO 0x0000
153#define POWERSTEP2_GEN_EL_POS_STEP_MASK 0x0180
154#define POWERSTEP2_GEN_EL_POS_MICROSTEP_ZERO 0x0000
155#define POWERSTEP2_GEN_EL_POS_MICROSTEP_MASK 0x007F
156#define POWERSTEP2_GEN_EL_POS_MASK 0x01FF
157#define POWERSTEP2_GEN_MARK_ZERO 0x000000ul
158#define POWERSTEP2_GEN_MARK_MASK 0x3FFFFFul
159#define POWERSTEP2_GEN_SPEED_MASK 0x0FFFFFul
160#define POWERSTEP2_GEN_ACC_14_55_STEP_S2 0x0001
161#define POWERSTEP2_GEN_ACC_29_1_STEP_S2 0x0002
162#define POWERSTEP2_GEN_ACC_101_85_STEP_S2 0x0007
163#define POWERSTEP2_GEN_ACC_1004_STEP_S2 0x0045
164#define POWERSTEP2_GEN_ACC_1004_STEP_S2 0x0045
165#define POWERSTEP2_GEN_ACC_2008_STEP_S2 0x008A
166#define POWERSTEP2_GEN_ACC_59575_541_STEP_S2 0x0FFF
167#define POWERSTEP2_GEN_ACC_MASK 0x0FFF
168#define POWERSTEP2_GEN_DEC_14_55_STEP_S2 0x0001
169#define POWERSTEP2_GEN_DEC_29_1_STEP_S2 0x0002
170#define POWERSTEP2_GEN_DEC_101_85_STEP_S2 0x0007
171#define POWERSTEP2_GEN_DEC_1004_STEP_S2 0x0045
172#define POWERSTEP2_GEN_DEC_2008_STEP_S2 0x008A
173#define POWERSTEP2_GEN_DEC_59575_541_STEP_S2 0x0FFF
174#define POWERSTEP2_GEN_DEC_MASK 0x0FFF
175#define POWERSTEP2_GEN_MAX_SPEED_15_25_STEP_S 0x0001
176#define POWERSTEP2_GEN_MAX_SPEED_30_5_STEP_S 0x0002
177#define POWERSTEP2_GEN_MAX_SPEED_305_STEP_S 0x0014
178#define POWERSTEP2_GEN_MAX_SPEED_991_25_STEP_S 0x0041
179#define POWERSTEP2_GEN_MAX_SPEED_15610_STEP_S 0x03FF
180#define POWERSTEP2_GEN_MAX_SPEED_MASK 0x03FF
181#define POWERSTEP2_GEN_MIN_SPEED_LSPD_OPT_LOW 0x0000
182#define POWERSTEP2_GEN_MIN_SPEED_LSPD_OPT_HIGH 0x1000
183#define POWERSTEP2_GEN_MIN_SPEED_LSPD_OPT_MASK 0x1000
184#define POWERSTEP2_GEN_MIN_SPEED_MIN_SPEED_0_STEP_S 0x0000
185#define POWERSTEP2_GEN_MIN_SPEED_MIN_SPEED_0_238_STEP_S 0x0001
186#define POWERSTEP2_GEN_MIN_SPEED_MIN_SPEED_0_476_STEP_S 0x0002
187#define POWERSTEP2_GEN_MIN_SPEED_MIN_SPEED_2_38_STEP_S 0x000A
188#define POWERSTEP2_GEN_MIN_SPEED_MIN_SPEED_976_3_STEP_S 0x0FFF
189#define POWERSTEP2_GEN_MIN_SPEED_MIN_SPEED_MASK 0x0FFF
190#define POWERSTEP2_GEN_MIN_SPEED_MASK 0x1FFF
191#define POWERSTEP2_GEN_ADC_OUT_MASK 0x1F
192#define POWERSTEP2_GEN_OCD_TH_31_25_MV 0x00
193#define POWERSTEP2_GEN_OCD_TH_62_5_MV 0x01
194#define POWERSTEP2_GEN_OCD_TH_93_75_MV 0x02
195#define POWERSTEP2_GEN_OCD_TH_281_25_MV 0x08
196#define POWERSTEP2_GEN_OCD_TH_531_25_MV 0x10
197#define POWERSTEP2_GEN_OCD_TH_1000_MV 0x1F
198#define POWERSTEP2_GEN_OCD_TH_MASK 0x1F
199#define POWERSTEP2_GEN_FS_SPD_BOOST_MODE_DISABLE 0x0000
200#define POWERSTEP2_GEN_FS_SPD_BOOST_MODE_ENABLE 0x0400
201#define POWERSTEP2_GEN_FS_SPD_BOOST_MODE_MASK 0x0400
202#define POWERSTEP2_GEN_FS_SPD_FS_SPD_7_63_STEP_S 0x0000
203#define POWERSTEP2_GEN_FS_SPD_FS_SPD_22_88_STEP_S 0x0001
204#define POWERSTEP2_GEN_FS_SPD_FS_SPD_38_13_STEP_S 0x0002
205#define POWERSTEP2_GEN_FS_SPD_FS_SPD_15617_STEP_S 0x03FF
206#define POWERSTEP2_GEN_FS_SPD_FS_SPD_MASK 0x03FF
207#define POWERSTEP2_GEN_FS_SPD_MASK 0x07FF
208#define POWERSTEP2_GEN_STEP_MODE_SYNC_EN_DISABLE 0x00
209#define POWERSTEP2_GEN_STEP_MODE_SYNC_EN_ENABLE 0x80
210#define POWERSTEP2_GEN_STEP_MODE_SYNC_EN_MASK 0x80
211#define POWERSTEP2_GEN_STEP_MODE_SYNC_SEL_FULL_STEP 0x00
212#define POWERSTEP2_GEN_STEP_MODE_SYNC_SEL_HALF_STEP 0x10
213#define POWERSTEP2_GEN_STEP_MODE_SYNC_SEL_QUARTER_STEP 0x20
214#define POWERSTEP2_GEN_STEP_MODE_SYNC_SEL_1_OVER_8 0x30
215#define POWERSTEP2_GEN_STEP_MODE_SYNC_SEL_1_OVER_16 0x40
216#define POWERSTEP2_GEN_STEP_MODE_SYNC_SEL_1_OVER_32 0x50
217#define POWERSTEP2_GEN_STEP_MODE_SYNC_SEL_1_OVER_64 0x60
218#define POWERSTEP2_GEN_STEP_MODE_SYNC_SEL_1_OVER_128 0x70
219#define POWERSTEP2_GEN_STEP_MODE_SYNC_SEL_MASK 0x70
220#define POWERSTEP2_GEN_STEP_MODE_CM_VM_VOLTAGE 0x00
221#define POWERSTEP2_GEN_STEP_MODE_CM_VM_CURRENT 0x08
222#define POWERSTEP2_GEN_STEP_MODE_CM_VM_MASK 0x08
223#define POWERSTEP2_GEN_STEP_MODE_STEP_SEL_FULL_STEP 0x00
224#define POWERSTEP2_GEN_STEP_MODE_STEP_SEL_HALF_STEP 0x01
225#define POWERSTEP2_GEN_STEP_MODE_STEP_SEL_QUARTER_STEP 0x02
226#define POWERSTEP2_GEN_STEP_MODE_STEP_SEL_1_OVER_8 0x03
227#define POWERSTEP2_GEN_STEP_MODE_STEP_SEL_1_OVER_16 0x04
228#define POWERSTEP2_GEN_STEP_MODE_STEP_SEL_1_OVER_32 0x05
229#define POWERSTEP2_GEN_STEP_MODE_STEP_SEL_1_OVER_64 0x06
230#define POWERSTEP2_GEN_STEP_MODE_STEP_SEL_1_OVER_128 0x07
231#define POWERSTEP2_GEN_STEP_MODE_STEP_SEL_MASK 0x07
232#define POWERSTEP2_GEN_STEP_MODE_MASK 0xFF
233#define POWERSTEP2_GEN_ALARM_EN_CMD_ERROR_MASK 0x80
234#define POWERSTEP2_GEN_ALARM_EN_SW_ON_MASK 0x40
235#define POWERSTEP2_GEN_ALARM_EN_STALL_DET_MASK 0x20
236#define POWERSTEP2_GEN_ALARM_EN_ADC_UVLO_MASK 0x10
237#define POWERSTEP2_GEN_ALARM_EN_UVLO_MASK 0x08
238#define POWERSTEP2_GEN_ALARM_EN_THERMAL_WARN_MASK 0x04
239#define POWERSTEP2_GEN_ALARM_EN_THERMAL_SD_MASK 0x02
240#define POWERSTEP2_GEN_ALARM_EN_OVERCURRENT_MASK 0x01
241#define POWERSTEP2_GEN_ALARM_EN_MASK 0xFF
242#define POWERSTEP2_GEN_GATECFG1_WD_EN_DISABLE 0x0000
243#define POWERSTEP2_GEN_GATECFG1_WD_EN_ENABLE 0x0800
244#define POWERSTEP2_GEN_GATECFG1_WD_EN_MASK 0x0800
245#define POWERSTEP2_GEN_GATECFG1_TBOOST_0_NS 0x0000
246#define POWERSTEP2_GEN_GATECFG1_TBOOST_62_5_NS 0x0100
247#define POWERSTEP2_GEN_GATECFG1_TBOOST_1000_NS 0x0700
248#define POWERSTEP2_GEN_GATECFG1_TBOOST_MASK 0x0700
249#define POWERSTEP2_GEN_GATECFG1_IGATE_4_MA 0x0020
250#define POWERSTEP2_GEN_GATECFG1_IGATE_8_MA 0x0040
251#define POWERSTEP2_GEN_GATECFG1_IGATE_16_MA 0x0060
252#define POWERSTEP2_GEN_GATECFG1_IGATE_24_MA 0x0080
253#define POWERSTEP2_GEN_GATECFG1_IGATE_32_MA 0x00A0
254#define POWERSTEP2_GEN_GATECFG1_IGATE_64_MA 0x00C0
255#define POWERSTEP2_GEN_GATECFG1_IGATE_96_MA 0x00E0
256#define POWERSTEP2_GEN_GATECFG1_IGATE_MASK 0x00E0
257#define POWERSTEP2_GEN_GATECFG1_TCC_125_NS 0x0000
258#define POWERSTEP2_GEN_GATECFG1_TCC_250_NS 0x0001
259#define POWERSTEP2_GEN_GATECFG1_TCC_375_NS 0x0002
260#define POWERSTEP2_GEN_GATECFG1_TCC_500_NS 0x0003
261#define POWERSTEP2_GEN_GATECFG1_TCC_3750_NS 0x001D
262#define POWERSTEP2_GEN_GATECFG1_TCC_MASK 0x001F
263#define POWERSTEP2_GEN_GATECFG1_MASK 0x0FFF
264#define POWERSTEP2_GEN_GATECFG2_TBLANK_125_NS 0x00
265#define POWERSTEP2_GEN_GATECFG2_TBLANK_250_NS 0x20
266#define POWERSTEP2_GEN_GATECFG2_TBLANK_375_NS 0x40
267#define POWERSTEP2_GEN_GATECFG2_TBLANK_1000_NS 0xE0
268#define POWERSTEP2_GEN_GATECFG2_TBLANK_MASK 0xE0
269#define POWERSTEP2_GEN_GATECFG2_TDT_125_NS 0x00
270#define POWERSTEP2_GEN_GATECFG2_TDT_250_NS 0x01
271#define POWERSTEP2_GEN_GATECFG2_TDT_4000_NS 0x1F
272#define POWERSTEP2_GEN_GATECFG2_TDT_MASK 0x1F
273#define POWERSTEP2_GEN_GATECFG2_MASK 0xFF
274#define POWERSTEP2_GEN_STATUS_STALL_A_MASK 0x8000
275#define POWERSTEP2_GEN_STATUS_STALL_B_MASK 0x4000
276#define POWERSTEP2_GEN_STATUS_OCD_MASK 0x2000
277#define POWERSTEP2_GEN_STATUS_TH_STATUS_MASK 0x1800
278#define POWERSTEP2_GEN_STATUS_UVLO_ADC_MASK 0x0400
279#define POWERSTEP2_GEN_STATUS_UVLO_MASK 0x0200
280#define POWERSTEP2_GEN_STATUS_STCK_MOD_MASK 0x0100
281#define POWERSTEP2_GEN_STATUS_CMD_ERROR_MASK 0x0080
282#define POWERSTEP2_GEN_STATUS_MOT_STATUS_MASK 0x0060
283#define POWERSTEP2_GEN_STATUS_DIR_MASK 0x0010
284#define POWERSTEP2_GEN_STATUS_SW_EVN_MASK 0x0008
285#define POWERSTEP2_GEN_STATUS_SW_F_MASK 0x0004
286#define POWERSTEP2_GEN_STATUS_BUSY_MASK 0x0002
287#define POWERSTEP2_GEN_STATUS_HIZ_MASK 0x0001
288#define POWERSTEP2_GEN_STATUS_MASK 0xFFFF
289#define POWERSTEP2_V_KVAL_HOLD_0_VS 0x00
290#define POWERSTEP2_V_KVAL_HOLD_0_004_VS 0x01
291#define POWERSTEP2_V_KVAL_HOLD_0_008_VS 0x02
292#define POWERSTEP2_V_KVAL_HOLD_0_104_VS 0x19
293#define POWERSTEP2_V_KVAL_HOLD_0_168_VS 0x29
294#define POWERSTEP2_V_KVAL_HOLD_0_996_VS 0xFF
295#define POWERSTEP2_V_KVAL_HOLD_MASK 0xFF
296#define POWERSTEP2_V_KVAL_RUN_0_VS 0x00
297#define POWERSTEP2_V_KVAL_RUN_0_004_VS 0x01
298#define POWERSTEP2_V_KVAL_RUN_0_008_VS 0x02
299#define POWERSTEP2_V_KVAL_RUN_0_104_VS 0x19
300#define POWERSTEP2_V_KVAL_RUN_0_168_VS 0x29
301#define POWERSTEP2_V_KVAL_RUN_0_996_VS 0xFF
302#define POWERSTEP2_V_KVAL_RUN_MASK 0xFF
303#define POWERSTEP2_V_KVAL_ACC_0_VS 0x00
304#define POWERSTEP2_V_KVAL_ACC_0_004_VS 0x01
305#define POWERSTEP2_V_KVAL_ACC_0_008_VS 0x02
306#define POWERSTEP2_V_KVAL_ACC_0_104_VS 0x19
307#define POWERSTEP2_V_KVAL_ACC_0_168_VS 0x29
308#define POWERSTEP2_V_KVAL_ACC_0_996_VS 0xFF
309#define POWERSTEP2_V_KVAL_ACC_MASK 0xFF
310#define POWERSTEP2_V_KVAL_DEC_0_VS 0x00
311#define POWERSTEP2_V_KVAL_DEC_0_004_VS 0x01
312#define POWERSTEP2_V_KVAL_DEC_0_008_VS 0x02
313#define POWERSTEP2_V_KVAL_DEC_0_104_VS 0x19
314#define POWERSTEP2_V_KVAL_DEC_0_168_VS 0x29
315#define POWERSTEP2_V_KVAL_DEC_0_996_VS 0xFF
316#define POWERSTEP2_V_KVAL_DEC_MASK 0xFF
317#define POWERSTEP2_V_INT_SPEED_0_STEP_S 0x0000
318#define POWERSTEP2_V_INT_SPEED_0_0596_STEP_S 0x0001
319#define POWERSTEP2_V_INT_SPEED_0_1192_STEP_S 0x0002
320#define POWERSTEP2_V_INT_SPEED_61_5668_STEP_S 0x0408
321#define POWERSTEP2_V_INT_SPEED_976_5_STEP_S 0x3FFF
322#define POWERSTEP2_V_INT_SPEED_MASK 0x3FFF
323#define POWERSTEP2_V_ST_SLP_0 0x00
324#define POWERSTEP2_V_ST_SLP_0_000015 0x01
325#define POWERSTEP2_V_ST_SLP_0_00003 0x02
326#define POWERSTEP2_V_ST_SLP_0_000135 0x08
327#define POWERSTEP2_V_ST_SLP_0_004 0xFF
328#define POWERSTEP2_V_ST_SLP_MASK 0xFF
329#define POWERSTEP2_V_FN_SLP_ACC_0 0x00
330#define POWERSTEP2_V_FN_SLP_ACC_0_000015 0x01
331#define POWERSTEP2_V_FN_SLP_ACC_0_00003 0x02
332#define POWERSTEP2_V_FN_SLP_ACC_0_000135 0x08
333#define POWERSTEP2_V_FN_SLP_ACC_0_00063 0x29
334#define POWERSTEP2_V_FN_SLP_ACC_0_004 0xFF
335#define POWERSTEP2_V_FN_SLP_ACC_MASK 0xFF
336#define POWERSTEP2_V_FN_SLP_DEC_0 0x00
337#define POWERSTEP2_V_FN_SLP_DEC_0_000015 0x01
338#define POWERSTEP2_V_FN_SLP_DEC_0_00003 0x02
339#define POWERSTEP2_V_FN_SLP_DEC_0_000135 0x08
340#define POWERSTEP2_V_FN_SLP_DEC_0_00063 0x29
341#define POWERSTEP2_V_FN_SLP_DEC_0_004 0xFF
342#define POWERSTEP2_V_FN_SLP_DEC_MASK 0xFF
343#define POWERSTEP2_V_K_THERM_1 0x00
344#define POWERSTEP2_V_K_THERM_1_03125 0x01
345#define POWERSTEP2_V_K_THERM_1_0625 0x02
346#define POWERSTEP2_V_K_THERM_1_46875 0x0F
347#define POWERSTEP2_V_K_THERM_MASK 0x0F
348#define POWERSTEP2_V_STALL_TH_31_25_MV 0x00
349#define POWERSTEP2_V_STALL_TH_62_5_MV 0x01
350#define POWERSTEP2_V_STALL_TH_93_75_MV 0x02
351#define POWERSTEP2_V_STALL_TH_281_25_MV 0x08
352#define POWERSTEP2_V_STALL_TH_531_25_MV 0x10
353#define POWERSTEP2_V_STALL_TH_1000_MV 0x1F
354#define POWERSTEP2_V_STALL_TH_MASK 0x1F
355#define POWERSTEP2_V_CONFIG_F_PWM_INT_19_5_KHZ 0x0000
356#define POWERSTEP2_V_CONFIG_F_PWM_INT_31_3_KHZ 0x0000
357#define POWERSTEP2_V_CONFIG_F_PWM_INT_62_5_KHZ 0x0000
358#define POWERSTEP2_V_CONFIG_F_PWM_INT_MASK 0xE000
359#define POWERSTEP2_V_CONFIG_F_PWM_DEC_19_5_KHZ 0x0000
360#define POWERSTEP2_V_CONFIG_F_PWM_DEC_31_3_KHZ 0x0C00
361#define POWERSTEP2_V_CONFIG_F_PWM_DEC_62_5_KHZ 0x1C00
362#define POWERSTEP2_V_CONFIG_F_PWM_DEC_MASK 0x1C00
363#define POWERSTEP2_V_CONFIG_VCCVAL_7_5_V 0x0000
364#define POWERSTEP2_V_CONFIG_VCCVAL_15_V 0x0200
365#define POWERSTEP2_V_CONFIG_VCCVAL_MASK 0x0200
366#define POWERSTEP2_V_CONFIG_UVLOVAL_LOW 0x0000
367#define POWERSTEP2_V_CONFIG_UVLOVAL_HIGH 0x0100
368#define POWERSTEP2_V_CONFIG_UVLOVAL_MASK 0x0100
369#define POWERSTEP2_V_CONFIG_OC_SD_DISABLE 0x0000
370#define POWERSTEP2_V_CONFIG_OC_SD_ENABLE 0x0080
371#define POWERSTEP2_V_CONFIG_OC_SD_MASK 0x0080
372#define POWERSTEP2_V_CONFIG_EN_VSCOMP_DISABLE 0x0000
373#define POWERSTEP2_V_CONFIG_EN_VSCOMP_ENABLE 0x0020
374#define POWERSTEP2_V_CONFIG_EN_VSCOMP_MASK 0x0020
375#define POWERSTEP2_V_CONFIG_SW_MODE_HARD_STOP_INT 0x0000
376#define POWERSTEP2_V_CONFIG_SW_MODE_USER_DISPOSAL 0x0010
377#define POWERSTEP2_V_CONFIG_SW_MODE_MASK 0x0010
378#define POWERSTEP2_V_CONFIG_EXT_CLK_DISABLE 0x0000
379#define POWERSTEP2_V_CONFIG_EXT_CLK_ENABLE 0x0008
380#define POWERSTEP2_V_CONFIG_EXT_CLK_MASK 0x0008
381#define POWERSTEP2_V_CONFIG_OSC_SEL_INT_16_MHZ 0x0000
382#define POWERSTEP2_V_CONFIG_OSC_SEL_MASK 0x0007
383#define POWERSTEP2_V_CONFIG_MASK 0xFFFF
384#define POWERSTEP2_C_TVAL_HOLD_7_8_MV 0x00
385#define POWERSTEP2_C_TVAL_HOLD_15_6_MV 0x01
386#define POWERSTEP2_C_TVAL_HOLD_202_8_MV 0x19
387#define POWERSTEP2_C_TVAL_HOLD_327_6_MV 0x29
388#define POWERSTEP2_C_TVAL_HOLD_1000_MV 0x7F
389#define POWERSTEP2_C_TVAL_HOLD_MASK 0x7F
390#define POWERSTEP2_C_TVAL_RUN_7_8_MV 0x00
391#define POWERSTEP2_C_TVAL_RUN_15_6_MV 0x01
392#define POWERSTEP2_C_TVAL_RUN_202_8_MV 0x19
393#define POWERSTEP2_C_TVAL_RUN_327_6_MV 0x29
394#define POWERSTEP2_C_TVAL_RUN_1000_MV 0x7F
395#define POWERSTEP2_C_TVAL_RUN_MASK 0x7F
396#define POWERSTEP2_C_TVAL_ACC_7_8_MV 0x00
397#define POWERSTEP2_C_TVAL_ACC_15_6_MV 0x01
398#define POWERSTEP2_C_TVAL_ACC_202_8_MV 0x19
399#define POWERSTEP2_C_TVAL_ACC_327_6_MV 0x29
400#define POWERSTEP2_C_TVAL_ACC_1000_MV 0x7F
401#define POWERSTEP2_C_TVAL_ACC_MASK 0x7F
402#define POWERSTEP2_C_TVAL_DEC_7_8_MV 0x00
403#define POWERSTEP2_C_TVAL_DEC_15_6_MV 0x01
404#define POWERSTEP2_C_TVAL_DEC_202_8_MV 0x19
405#define POWERSTEP2_C_TVAL_DEC_327_6_MV 0x29
406#define POWERSTEP2_C_TVAL_DEC_1000_MV 0x7F
407#define POWERSTEP2_C_TVAL_DEC_MASK 0x7F
408#define POWERSTEP2_C_T_FAST_TOFF_FAST_2_US 0x00
409#define POWERSTEP2_C_T_FAST_TOFF_FAST_4_US 0x10
410#define POWERSTEP2_C_T_FAST_TOFF_FAST_10_US 0x40
411#define POWERSTEP2_C_T_FAST_TOFF_FAST_32_US 0xF0
412#define POWERSTEP2_C_T_FAST_TOFF_FAST_MASK 0xF0
413#define POWERSTEP2_C_T_FAST_FAST_STEP_2_US 0x00
414#define POWERSTEP2_C_T_FAST_FAST_STEP_4_US 0x01
415#define POWERSTEP2_C_T_FAST_FAST_STEP_10_US 0x04
416#define POWERSTEP2_C_T_FAST_FAST_STEP_16_US 0x07
417#define POWERSTEP2_C_T_FAST_FAST_STEP_32_US 0x0F
418#define POWERSTEP2_C_T_FAST_FAST_STEP_MASK 0x0F
419#define POWERSTEP2_C_T_FAST_MASK 0xFF
420#define POWERSTEP2_C_TON_MIN_0_5_US 0x00
421#define POWERSTEP2_C_TON_MIN_1_US 0x01
422#define POWERSTEP2_C_TON_MIN_2_5_US 0x04
423#define POWERSTEP2_C_TON_MIN_64_US 0x7F
424#define POWERSTEP2_C_TON_MIN_MASK 0x7F
425#define POWERSTEP2_C_TOFF_MIN_0_5_US 0x00
426#define POWERSTEP2_C_TOFF_MIN_1_US 0x01
427#define POWERSTEP2_C_TOFF_MIN_2_5_US 0x04
428#define POWERSTEP2_C_TOFF_MIN_21_US 0x29
429#define POWERSTEP2_C_TOFF_MIN_64_US 0x7F
430#define POWERSTEP2_C_TOFF_MIN_MASK 0x7F
431#define POWERSTEP2_C_CONFIG_PRED_EN_DISABLE 0x0000
432#define POWERSTEP2_C_CONFIG_PRED_EN_ENABLE 0x8000
433#define POWERSTEP2_C_CONFIG_PRED_EN_MASK 0x8000
434#define POWERSTEP2_C_CONFIG_TSW_4_US 0x0400
435#define POWERSTEP2_C_CONFIG_TSW_8_US 0x0800
436#define POWERSTEP2_C_CONFIG_TSW_48_US 0x3000
437#define POWERSTEP2_C_CONFIG_TSW_124_US 0x7C00
438#define POWERSTEP2_C_CONFIG_TSW_MASK 0x7C00
439#define POWERSTEP2_C_CONFIG_VCCVAL_7_5_V 0x0000
440#define POWERSTEP2_C_CONFIG_VCCVAL_15_V 0x0200
441#define POWERSTEP2_C_CONFIG_VCCVAL_MASK 0x0200
442#define POWERSTEP2_C_CONFIG_UVLOVAL_LOW 0x0000
443#define POWERSTEP2_C_CONFIG_UVLOVAL_HIGH 0x0100
444#define POWERSTEP2_C_CONFIG_UVLOVAL_MASK 0x0100
445#define POWERSTEP2_C_CONFIG_OC_SD_DISABLE 0x0000
446#define POWERSTEP2_C_CONFIG_OC_SD_ENABLE 0x0080
447#define POWERSTEP2_C_CONFIG_OC_SD_MASK 0x0080
448#define POWERSTEP2_C_CONFIG_EN_TQREG_DISABLE 0x0000
449#define POWERSTEP2_C_CONFIG_EN_TQREG_ENABLE 0x0020
450#define POWERSTEP2_C_CONFIG_EN_TQREG_MASK 0x0020
451#define POWERSTEP2_C_CONFIG_SW_MODE_HARD_STOP_INT 0x0000
452#define POWERSTEP2_C_CONFIG_SW_MODE_USER_DISPOSAL 0x0010
453#define POWERSTEP2_C_CONFIG_SW_MODE_MASK 0x0010
454#define POWERSTEP2_C_CONFIG_EXT_CLK_DISABLE 0x0000
455#define POWERSTEP2_C_CONFIG_EXT_CLK_ENABLE 0x0008
456#define POWERSTEP2_C_CONFIG_EXT_CLK_MASK 0x0008
457#define POWERSTEP2_C_CONFIG_OSC_SEL_INT_16_MHZ 0x0000
458#define POWERSTEP2_C_CONFIG_OSC_SEL_MASK 0x0007
459#define POWERSTEP2_C_CONFIG_MASK 0xFFFF
465#define POWERSTEP2_GEN_ABS_POS_DEF ( POWERSTEP2_GEN_ABS_POS_HOME )
466#define POWERSTEP2_GEN_EL_POS_DEF ( POWERSTEP2_GEN_EL_POS_STEP_ZERO | \
467 POWERSTEP2_GEN_EL_POS_MICROSTEP_ZERO )
468#define POWERSTEP2_GEN_MARK_DEF ( POWERSTEP2_GEN_MARK_ZERO )
469#define POWERSTEP2_GEN_ACC_DEF ( POWERSTEP2_GEN_ACC_101_85_STEP_S2 )
470#define POWERSTEP2_GEN_DEC_DEF ( POWERSTEP2_GEN_DEC_101_85_STEP_S2 )
471#define POWERSTEP2_GEN_MAX_SPEED_DEF ( POWERSTEP2_GEN_MAX_SPEED_305_STEP_S )
472#define POWERSTEP2_GEN_MIN_SPEED_DEF ( POWERSTEP2_GEN_MIN_SPEED_LSPD_OPT_LOW | \
473 POWERSTEP2_GEN_MIN_SPEED_MIN_SPEED_0_STEP_S )
474#define POWERSTEP2_GEN_OCD_TH_DEF ( POWERSTEP2_GEN_OCD_TH_531_25_MV )
475#define POWERSTEP2_GEN_FS_SPD_DEF ( POWERSTEP2_GEN_FS_SPD_BOOST_MODE_DISABLE | \
476 POWERSTEP2_GEN_FS_SPD_FS_SPD_15617_STEP_S )
477#define POWERSTEP2_GEN_STEP_MODE_DEF ( POWERSTEP2_GEN_STEP_MODE_SYNC_EN_DISABLE | \
478 POWERSTEP2_GEN_STEP_MODE_SYNC_SEL_FULL_STEP | \
479 POWERSTEP2_GEN_STEP_MODE_CM_VM_VOLTAGE | \
480 POWERSTEP2_GEN_STEP_MODE_STEP_SEL_1_OVER_32 )
481#define POWERSTEP2_GEN_ALARM_EN_DEF ( POWERSTEP2_GEN_ALARM_EN_CMD_ERROR_MASK | \
482 POWERSTEP2_GEN_ALARM_EN_SW_ON_MASK | \
483 POWERSTEP2_GEN_ALARM_EN_STALL_DET_MASK | \
484 POWERSTEP2_GEN_ALARM_EN_UVLO_MASK | \
485 POWERSTEP2_GEN_ALARM_EN_THERMAL_WARN_MASK | \
486 POWERSTEP2_GEN_ALARM_EN_THERMAL_SD_MASK | \
487 POWERSTEP2_GEN_ALARM_EN_OVERCURRENT_MASK )
488#define POWERSTEP2_GEN_GATECFG1_DEF ( POWERSTEP2_GEN_GATECFG1_WD_EN_DISABLE | \
489 POWERSTEP2_GEN_GATECFG1_TBOOST_0_NS | \
490 POWERSTEP2_GEN_GATECFG1_IGATE_64_MA | \
491 POWERSTEP2_GEN_GATECFG1_TCC_500_NS )
492#define POWERSTEP2_GEN_GATECFG2_DEF ( POWERSTEP2_GEN_GATECFG2_TBLANK_375_NS | \
493 POWERSTEP2_GEN_GATECFG2_TDT_125_NS )
494#define POWERSTEP2_V_CONFIG_DEF ( POWERSTEP2_V_CONFIG_F_PWM_INT_62_5_KHZ | \
495 POWERSTEP2_V_CONFIG_F_PWM_DEC_62_5_KHZ | \
496 POWERSTEP2_V_CONFIG_VCCVAL_15_V | \
497 POWERSTEP2_V_CONFIG_UVLOVAL_LOW | \
498 POWERSTEP2_V_CONFIG_OC_SD_DISABLE | \
499 POWERSTEP2_V_CONFIG_EN_VSCOMP_DISABLE | \
500 POWERSTEP2_V_CONFIG_SW_MODE_HARD_STOP_INT | \
501 POWERSTEP2_V_CONFIG_EXT_CLK_DISABLE | \
502 POWERSTEP2_V_CONFIG_OSC_SEL_INT_16_MHZ )
503#define POWERSTEP2_V_KVAL_HOLD_DEF ( POWERSTEP2_V_KVAL_HOLD_0_168_VS )
504#define POWERSTEP2_V_KVAL_RUN_DEF ( POWERSTEP2_V_KVAL_RUN_0_168_VS )
505#define POWERSTEP2_V_KVAL_ACC_DEF ( POWERSTEP2_V_KVAL_ACC_0_168_VS )
506#define POWERSTEP2_V_KVAL_DEC_DEF ( POWERSTEP2_V_KVAL_DEC_0_168_VS )
507#define POWERSTEP2_V_INT_SPEED_DEF ( POWERSTEP2_V_INT_SPEED_61_5668_STEP_S )
508#define POWERSTEP2_V_ST_SLP_DEF ( POWERSTEP2_V_ST_SLP_0_000135 )
509#define POWERSTEP2_V_FN_SLP_ACC_DEF ( POWERSTEP2_V_FN_SLP_ACC_0_00063 )
510#define POWERSTEP2_V_FN_SLP_DEC_DEF ( POWERSTEP2_V_FN_SLP_DEC_0_00063 )
511#define POWERSTEP2_V_K_THERM_DEF ( POWERSTEP2_V_K_THERM_1 )
512#define POWERSTEP2_V_STALL_TH_DEF ( POWERSTEP2_V_STALL_TH_531_25_MV )
513#define POWERSTEP2_C_CONFIG_DEF ( POWERSTEP2_C_CONFIG_PRED_EN_DISABLE | \
514 POWERSTEP2_C_CONFIG_TSW_48_US | \
515 POWERSTEP2_C_CONFIG_VCCVAL_15_V | \
516 POWERSTEP2_C_CONFIG_UVLOVAL_LOW | \
517 POWERSTEP2_C_CONFIG_OC_SD_ENABLE | \
518 POWERSTEP2_C_CONFIG_EN_TQREG_DISABLE | \
519 POWERSTEP2_C_CONFIG_SW_MODE_HARD_STOP_INT | \
520 POWERSTEP2_C_CONFIG_EXT_CLK_DISABLE | \
521 POWERSTEP2_C_CONFIG_OSC_SEL_INT_16_MHZ )
522#define POWERSTEP2_C_TVAL_HOLD_DEF ( POWERSTEP2_C_TVAL_HOLD_327_6_MV )
523#define POWERSTEP2_C_TVAL_RUN_DEF ( POWERSTEP2_C_TVAL_RUN_327_6_MV )
524#define POWERSTEP2_C_TVAL_ACC_DEF ( POWERSTEP2_C_TVAL_ACC_327_6_MV )
525#define POWERSTEP2_C_TVAL_DEC_DEF ( POWERSTEP2_C_TVAL_DEC_327_6_MV )
526#define POWERSTEP2_C_T_FAST_DEF ( POWERSTEP2_C_T_FAST_TOFF_FAST_10_US | \
527 POWERSTEP2_C_T_FAST_FAST_STEP_16_US )
528#define POWERSTEP2_C_TON_MIN_DEF ( POWERSTEP2_C_TON_MIN_2_5_US )
529#define POWERSTEP2_C_TOFF_MIN_DEF ( POWERSTEP2_C_TOFF_MIN_21_US )
535#define POWERSTEP2_CONTROL_MODE_VOLTAGE 0
536#define POWERSTEP2_CONTROL_MODE_CURRENT 1
542#define POWERSTEP2_STEP_MODE_FULL_STEP 0
543#define POWERSTEP2_STEP_MODE_HALF_STEP 1
544#define POWERSTEP2_STEP_MODE_QUARTER_STEP 2
545#define POWERSTEP2_STEP_MODE_1_OVER_8 3
546#define POWERSTEP2_STEP_MODE_1_OVER_16 4
547#define POWERSTEP2_STEP_MODE_1_OVER_32 5
548#define POWERSTEP2_STEP_MODE_1_OVER_64 6
549#define POWERSTEP2_STEP_MODE_1_OVER_128 7
555#define POWERSTEP2_ACCELERATION_STEP 14.55f
556#define POWERSTEP2_ACCELERATION_MIN 14.55f
557#define POWERSTEP2_ACCELERATION_MAX 59575.541f
558#define POWERSTEP2_DECELERATION_STEP 14.55f
559#define POWERSTEP2_DECELERATION_MIN 14.55f
560#define POWERSTEP2_DECELERATION_MAX 59575.541f
566#define POWERSTEP2_MIN_SPEED_STEP 0.238f
567#define POWERSTEP2_MIN_SPEED_MIN 0.0f
568#define POWERSTEP2_MIN_SPEED_MAX 976.3f
569#define POWERSTEP2_MAX_SPEED_STEP 15.25f
570#define POWERSTEP2_MAX_SPEED_MIN 15.25f
571#define POWERSTEP2_MAX_SPEED_MAX 15610.0f
577#define POWERSTEP2_DIR_CW 1
578#define POWERSTEP2_DIR_CCW 0
584#define POWERSTEP2_PIN_LOW_LEVEL 0
585#define POWERSTEP2_PIN_HIGH_LEVEL 1
591#define POWERSTEP2_SPEED_VERY_SLOW 0
592#define POWERSTEP2_SPEED_SLOW 1
593#define POWERSTEP2_SPEED_MEDIUM 2
594#define POWERSTEP2_SPEED_FAST 3
595#define POWERSTEP2_SPEED_VERY_FAST 4
601#define POWERSTEP2_ROUND_TO_INT 0.5f
611#define POWERSTEP2_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
612#define POWERSTEP2_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
630#define POWERSTEP2_MAP_MIKROBUS( cfg, mikrobus ) \
631 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
632 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
633 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
634 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
635 cfg.busy = MIKROBUS( mikrobus, MIKROBUS_AN ); \
636 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
637 cfg.step = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
638 cfg.flag = MIKROBUS( mikrobus, MIKROBUS_INT )
uint8_t powerstep2_get_flag_pin(powerstep2_t *ctx)
Power Step 2 get flag pin function.
void powerstep2_cfg_setup(powerstep2_cfg_t *cfg)
Power Step 2 configuration object setup function.
err_t powerstep2_run(powerstep2_t *ctx, uint8_t dir, uint32_t speed)
Power Step 2 run motor function.
err_t powerstep2_soft_stop(powerstep2_t *ctx)
Power Step 2 soft stop function.
err_t powerstep2_clear_status(powerstep2_t *ctx)
Power Step 2 clear status function.
err_t powerstep2_set_control_mode(powerstep2_t *ctx, uint8_t ctrl_mode)
Power Step 2 set control mode function.
err_t powerstep2_go_to_dir(powerstep2_t *ctx, uint8_t dir, uint32_t abs_pos)
Power Step 2 go to position with direction function.
err_t powerstep2_set_param(powerstep2_t *ctx, uint8_t param, uint32_t data_in)
Power Step 2 set parameter function.
err_t powerstep2_set_step_mode(powerstep2_t *ctx, uint8_t step_mode)
Power Step 2 set step mode function.
err_t powerstep2_go_home(powerstep2_t *ctx)
Power Step 2 go home function.
void powerstep2_hw_reset_device(powerstep2_t *ctx)
Power Step 2 reset device function.
err_t powerstep2_go_mark(powerstep2_t *ctx)
Power Step 2 go mark function.
err_t powerstep2_get_param(powerstep2_t *ctx, uint8_t param, uint32_t *data_out)
Power Step 2 get parameter function.
err_t powerstep2_get_status(powerstep2_t *ctx, uint16_t *status)
Power Step 2 get status function.
err_t powerstep2_spi_transfer(powerstep2_t *ctx, uint8_t *data_io, uint8_t len)
Power Step 2 SPI transfer function.
err_t powerstep2_hard_stop(powerstep2_t *ctx)
Power Step 2 hard stop function.
err_t powerstep2_reset_device(powerstep2_t *ctx)
Power Step 2 reset device function.
err_t powerstep2_init(powerstep2_t *ctx, powerstep2_cfg_t *cfg)
Power Step 2 initialization function.
err_t powerstep2_reset_pos(powerstep2_t *ctx)
Power Step 2 reset position function.
err_t powerstep2_step_clock(powerstep2_t *ctx, uint8_t dir)
Power Step 2 step clock function.
err_t powerstep2_default_cfg(powerstep2_t *ctx)
Power Step 2 default configuration function.
uint8_t powerstep2_get_busy_pin(powerstep2_t *ctx)
Power Step 2 get busy pin function.
void powerstep2_drive_motor(powerstep2_t *ctx, uint32_t steps, uint8_t speed)
Power Step 2 drive motor function.
err_t powerstep2_hard_hiz(powerstep2_t *ctx)
Power Step 2 hard HiZ function.
err_t powerstep2_go_to(powerstep2_t *ctx, uint32_t abs_pos)
Power Step 2 go to position function.
err_t powerstep2_release_sw(powerstep2_t *ctx, uint8_t act, uint8_t dir)
Power Step 2 release switch function.
err_t powerstep2_move(powerstep2_t *ctx, uint8_t dir, uint32_t n_step)
Power Step 2 move motor function.
err_t powerstep2_set_speed(powerstep2_t *ctx, float min_speed, float max_speed)
Power Step 2 set speed function.
void powerstep2_set_rst_pin(powerstep2_t *ctx, uint8_t state)
Power Step 2 set rst pin function.
err_t powerstep2_go_until(powerstep2_t *ctx, uint8_t act, uint8_t dir, uint32_t speed)
Power Step 2 go until function.
void powerstep2_set_step_pin(powerstep2_t *ctx, uint8_t state)
Power Step 2 set step pin function.
err_t powerstep2_set_acc_dec(powerstep2_t *ctx, float acc_step_s2, float dec_step_s2)
Power Step 2 set acceleration and deceleration function.
err_t powerstep2_soft_hiz(powerstep2_t *ctx)
Power Step 2 soft HiZ function.
powerstep2_return_value_t
Power Step 2 Click return value data.
Definition powerstep2.h:697
@ POWERSTEP2_ERROR
Definition powerstep2.h:699
@ POWERSTEP2_OK
Definition powerstep2.h:698
This file contains SPI specific macros, functions, etc.
Power Step 2 Click configuration object.
Definition powerstep2.h:672
pin_name_t step
Definition powerstep2.h:682
spi_master_chip_select_polarity_t cs_polarity
Definition powerstep2.h:688
pin_name_t sck
Definition powerstep2.h:676
pin_name_t flag
Definition powerstep2.h:683
spi_master_mode_t spi_mode
Definition powerstep2.h:687
pin_name_t mosi
Definition powerstep2.h:675
uint32_t spi_speed
Definition powerstep2.h:686
pin_name_t miso
Definition powerstep2.h:674
pin_name_t rst
Definition powerstep2.h:681
pin_name_t busy
Definition powerstep2.h:680
pin_name_t cs
Definition powerstep2.h:677
Power Step 2 Click context object.
Definition powerstep2.h:648
spi_master_t spi
Definition powerstep2.h:658
uint8_t step_mode
Definition powerstep2.h:662
digital_in_t busy
Definition powerstep2.h:654
digital_out_t step
Definition powerstep2.h:651
digital_in_t flag
Definition powerstep2.h:655
uint8_t control_mode
Definition powerstep2.h:663
digital_out_t rst
Definition powerstep2.h:650
pin_name_t chip_select
Definition powerstep2.h:660